package com.lhn.springbootinit.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lhn.springbootinit.model.domain.Post;
import com.lhn.springbootinit.mapper.PostMapper;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@Component
@RestController
public class PostController {
    @Resource
    private PostMapper postMapper;

    @GetMapping("/public/post")
    public List<Post> getPosts() {
        List<Post> posts = postMapper.selectList(null);
        return posts;
    }

    @GetMapping("/public/postById")
    public Post getPostById(@RequestParam int postid) {
        QueryWrapper<Post> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("PostId",postid);
        Post post = postMapper.selectOne(queryWrapper);
        return post;
    }

    /**
     * 获取分页数据
     *
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/public/post/page")
    public IPage<Post> getPostsByPage(@RequestParam int current ,@RequestParam int size){
        IPage<Post> page = new Page<>(current, size);

        QueryWrapper<Post> queryWrapper = new QueryWrapper<>();

        queryWrapper.like("isDelete",0);
        // 调用Mapper的selectPage方法进行分页查询
        // 假设你的Mapper接口有一个selectPage方法，它接受一个IPage对象作为参数
        postMapper.selectPage(page, queryWrapper); // 第二个参数是查询条件，这里为null表示没有条件，你可以根据需要构建QueryWrapper或LambdaQueryWrapper

        // selectPage方法会填充page对象，包括数据列表和分页信息
        // 直接返回这个page对象即可，Spring会将其自动转换为JSON格式
        return page;
    }

//    @GetMapping("/public/post/page")
//    public IPage<Post> getPostsByPage(@RequestParam(defaultValue = "1") int current, // 当前页码，默认为1
//                                      @RequestParam(defaultValue = "10") int size // 每页大小，默认为10
//                                      // 每页大小，默认为10
//                                      // 创建分页对象，传入当前页码和每页大小
//                                      ,@RequestParam String tag) {
//        IPage<Post> page = new Page<>(current, size);
//
//        // 调用Mapper的selectPage方法进行分页查询
//        // 假设你的Mapper接口有一个selectPage方法，它接受一个IPage对象作为参数
//        postMapper.selectPage(page, null); // 第二个参数是查询条件，这里为null表示没有条件，你可以根据需要构建QueryWrapper或LambdaQueryWrapper
//
//        // selectPage方法会填充page对象，包括数据列表和分页信息
//        // 直接返回这个page对象即可，Spring会将其自动转换为JSON格式
//        return page;
//    }


}
